package com.bzframework.network;

import jakarta.annotation.Nonnull;

/**
 * NetworkProvider 网络供应商
 */
public interface NetworkProvider<P> {


    /**
     * @return 类型
     * @see DefaultNetworkType
     */
    @Nonnull
    NetworkType getType();

    /**
     * 使用配置创建一个网络组件
     *
     * @param properties 配置信息
     * @return 网络组件
     */
    @Nonnull
    Network createNetwork(@Nonnull P properties);

    /**
     * 关闭网络组件
     */
    void shutdown();


}
